home *** CD-ROM | disk | FTP | other *** search
- % +------------------------------+
- % | test for Prolog source |
- % |______________________________|
-
- isinteger(X, L) :- type(X, int, L).
-
- % booleans
- type(true, bool, _).
- type(false, bool, _).
-
- type( and(X,Y), bool, L) :- isboolean(X,L), isboolean(Y,L).
- type( or(X,Y), bool, L) :- isboolean(X,L), isboolean(Y,L).
- type( not(X), bool, L) :- isboolean(X,L).
-
- type( succ(X), int, L ) :- isinteger(X,L).
- type( pred(X), int, L ) :- isinteger(X,L).
- type( iszero(X), bool, L ) :- isinteger(X,L).
- type( X < Y, bool, L ) :- isinteger(X,L), isinteger(Y,L).
-
- % is_member(X,L) check whether X is in the list
- % by using unification with occur check
-
- is_member(_, []) :- fail.
- is_member(X, [Y | _]) :- unify(X,Y).
- is_member(X, [_ | List]) :- is_member(X, List).
-